
package SwingForms;

import LogicaClasesNew.Fabrica;
import LogicaClasesNew.IcontroladorCategoria;
import LogicaClasesNew.IcontroladorProducto;
import LogicaClasesNew.IcontroladorProveedor;
import static SwingForms.frmInfoOrdenCompra.modeloJT_InfoOrden;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.List;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;


public class frmModificarProducto extends javax.swing.JInternalFrame {

    /**
     * Creates new form frmModificarProducto
     */
private IcontroladorProducto ICP;

private IcontroladorCategoria ICC;

private IcontroladorProveedor ICPROV;

private DefaultTableModel Productocategoria;

    public frmModificarProducto() {
        
        Fabrica fab = Fabrica.getInstance();
        this.ICP = fab.getControladorProducto();
        this.ICC = fab.getControladorCategoria();
        this.ICPROV = fab.getControladorProveedor();
        
        initComponents();
        iniciarComboBoxCategoria ();
        CrearModeloJT_Productocategoria();
          //Inicio funcion UpperCasep
      KeyListener escucha = new KeyListener() {  
  
            @Override  
            public void keyTyped(final KeyEvent e) {  
                SwingUtilities.invokeLater(new Runnable() {  
                    @Override  
                    public void run() {  
                        JTextField campo = (JTextField) e.getSource();  
                        int posicaoCursor = campo.getCaretPosition();  
                        campo.setText(campo.getText().toUpperCase());  
                        if (posicaoCursor != campo.getCaretPosition()) {  
                            campo.setCaretPosition(posicaoCursor);  
                        }  
                    }  
                });  
            }  
  
            @Override  
            public void keyReleased(KeyEvent e) {  
            }  
  
            @Override  
            public void keyPressed(KeyEvent e) {  
            }  
        };  //FIN KeyListener escucha
        
      //cargo los TextFields con la funcion de convertir TODO a mayuscula
        JTF_ModProductoTitulo.addKeyListener(escucha);
        JTF_ModProductoDescripcion.addKeyListener(escucha);
        TA_ModProdEspecificaciones.addKeyListener(escucha);
        //JTP_ModProductoEspecifiaciones.addKeyListener(escucha);
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        JL_ModProductoInforProducto = new javax.swing.JLabel();
        JL_ModProductoSeleccioneProducto = new javax.swing.JLabel();
        JL_ModProductoInforProducto1 = new javax.swing.JLabel();
        JTF_ModProductoDescripcion = new javax.swing.JTextField();
        JL_ModProductoTitulo = new javax.swing.JLabel();
        JL_ModProductoEspecifiacion = new javax.swing.JLabel();
        JL_ModProductoPesosUruguayos = new javax.swing.JLabel();
        JTF_ModProductoTitulo = new javax.swing.JTextField();
        JL_ModProductoProveedor = new javax.swing.JLabel();
        JL_ModProductoNumReferencia = new javax.swing.JLabel();
        JL_ModProductoPrecio = new javax.swing.JLabel();
        JTF_ModProductoProveedor = new javax.swing.JTextField();
        JTF_ModProductoPrecio = new javax.swing.JTextField();
        JTF_ModProductoNumReferencia = new javax.swing.JTextField();
        JL_ModProductoCategorias = new javax.swing.JLabel();
        JL_ModProductoDescripcion = new javax.swing.JLabel();
        JB_ModProductoCerrar = new javax.swing.JButton();
        jLabel2 = new javax.swing.JLabel();
        JB_ModificarProductoGuardar = new javax.swing.JButton();
        JCB_ModProdSeleccioneCategoria = new javax.swing.JComboBox();
        JCB_ModProdSeleccioneProducto = new javax.swing.JComboBox();
        JCB_ModProdSeleccioneCategoriaMODIFICAR = new javax.swing.JComboBox();
        TA_ModProdEspecificaciones = new java.awt.TextArea();
        JCB_CambiarNumRef = new javax.swing.JButton();
        JTF_NuevaRef = new javax.swing.JLabel();
        JTF_ModProdNumRef = new javax.swing.JTextField();
        jScrollPane1 = new javax.swing.JScrollPane();
        JT_Productocategoria = new javax.swing.JTable();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();

        setTitle("Modificar Producto");

        JL_ModProductoInforProducto.setFont(new java.awt.Font("Trebuchet MS", 1, 14)); // NOI18N
        JL_ModProductoInforProducto.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/SeleccioneProductoAzul.png"))); // NOI18N

        JL_ModProductoSeleccioneProducto.setFont(new java.awt.Font("Trebuchet MS", 1, 14)); // NOI18N
        JL_ModProductoSeleccioneProducto.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/SeleccioneCategoriaAzul.png"))); // NOI18N

        JL_ModProductoInforProducto1.setFont(new java.awt.Font("Trebuchet MS", 1, 14)); // NOI18N
        JL_ModProductoInforProducto1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/infooProducto.png"))); // NOI18N

        JTF_ModProductoDescripcion.setForeground(new java.awt.Color(0, 102, 102));

        JL_ModProductoTitulo.setText("Titulo:");

        JL_ModProductoEspecifiacion.setText("Especificaciones:");

        JL_ModProductoPesosUruguayos.setForeground(new java.awt.Color(102, 102, 102));
        JL_ModProductoPesosUruguayos.setText("(Peso Uruguayo)");

        JTF_ModProductoTitulo.setForeground(new java.awt.Color(0, 102, 102));

        JL_ModProductoProveedor.setText("Proveedor:");

        JL_ModProductoNumReferencia.setText("Numero Referencia:");

        JL_ModProductoPrecio.setText("Precio:");

        JTF_ModProductoProveedor.setDisabledTextColor(new java.awt.Color(0, 51, 51));
        JTF_ModProductoProveedor.setEnabled(false);

        JTF_ModProductoPrecio.setForeground(new java.awt.Color(0, 102, 102));
        JTF_ModProductoPrecio.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                JTF_ModProductoPrecioKeyTyped(evt);
            }
        });

        JTF_ModProductoNumReferencia.setEditable(false);
        JTF_ModProductoNumReferencia.setForeground(new java.awt.Color(0, 102, 102));
        JTF_ModProductoNumReferencia.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                JTF_ModProductoNumReferenciaKeyTyped(evt);
            }
        });

        JL_ModProductoCategorias.setText("Categorias:");

        JL_ModProductoDescripcion.setText("Descripcion:");

        JB_ModProductoCerrar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/Cerrar.png"))); // NOI18N
        JB_ModProductoCerrar.setToolTipText("Cierra Ventana");
        JB_ModProductoCerrar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                JB_ModProductoCerrarActionPerformed(evt);
            }
        });

        jLabel2.setForeground(new java.awt.Color(102, 102, 102));
        jLabel2.setText("Proveedor NO se puede Modifcar");

        JB_ModificarProductoGuardar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/Guardar.png"))); // NOI18N
        JB_ModificarProductoGuardar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                JB_ModificarProductoGuardarActionPerformed(evt);
            }
        });

        JCB_ModProdSeleccioneCategoria.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        JCB_ModProdSeleccioneCategoria.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Seleccione Categoria" }));
        JCB_ModProdSeleccioneCategoria.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                JCB_ModProdSeleccioneCategoriaItemStateChanged(evt);
            }
        });
        JCB_ModProdSeleccioneCategoria.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                JCB_ModProdSeleccioneCategoriaActionPerformed(evt);
            }
        });

        JCB_ModProdSeleccioneProducto.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        JCB_ModProdSeleccioneProducto.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Seleccione Producto" }));
        JCB_ModProdSeleccioneProducto.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                JCB_ModProdSeleccioneProductoItemStateChanged(evt);
            }
        });
        JCB_ModProdSeleccioneProducto.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                JCB_ModProdSeleccioneProductoMouseClicked(evt);
            }
        });
        JCB_ModProdSeleccioneProducto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                JCB_ModProdSeleccioneProductoActionPerformed(evt);
            }
        });

        JCB_ModProdSeleccioneCategoriaMODIFICAR.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Seleccione Categoria" }));
        JCB_ModProdSeleccioneCategoriaMODIFICAR.setEnabled(false);
        JCB_ModProdSeleccioneCategoriaMODIFICAR.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                JCB_ModProdSeleccioneCategoriaMODIFICARActionPerformed(evt);
            }
        });

        TA_ModProdEspecificaciones.setForeground(new java.awt.Color(0, 102, 102));

        JCB_CambiarNumRef.setText("Cambiar");
        JCB_CambiarNumRef.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                JCB_CambiarNumRefMouseClicked(evt);
            }
        });
        JCB_CambiarNumRef.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                JCB_CambiarNumRefActionPerformed(evt);
            }
        });

        JTF_NuevaRef.setVisible(false);
        JTF_NuevaRef.setText("Nueva Referencia:");

        JTF_ModProdNumRef.setEditable(false);
        JTF_ModProdNumRef.setForeground(new java.awt.Color(0, 102, 102));
        JTF_ModProdNumRef.setVisible(false);
        JTF_ModProdNumRef.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                JTF_ModProdNumRefKeyTyped(evt);
            }
        });

        JT_Productocategoria.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {},
                {},
                {},
                {}
            },
            new String [] {

            }
        ));
        jScrollPane1.setViewportView(JT_Productocategoria);

        jButton1.setText("Agregar");

        jButton2.setText("Quitar");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addGap(38, 38, 38)
                                .addComponent(JL_ModProductoDescripcion))
                            .addGroup(layout.createSequentialGroup()
                                .addGap(15, 15, 15)
                                .addComponent(JL_ModProductoEspecifiacion))
                            .addGroup(layout.createSequentialGroup()
                                .addGap(25, 25, 25)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(layout.createSequentialGroup()
                                        .addGap(24, 24, 24)
                                        .addComponent(JL_ModProductoPrecio))
                                    .addComponent(JL_ModProductoProveedor)
                                    .addGroup(layout.createSequentialGroup()
                                        .addGap(1, 1, 1)
                                        .addComponent(JL_ModProductoCategorias)))))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(TA_ModProdEspecificaciones, javax.swing.GroupLayout.PREFERRED_SIZE, 373, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(JTF_ModProductoDescripcion, javax.swing.GroupLayout.PREFERRED_SIZE, 434, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGroup(layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(JTF_ModProductoProveedor, javax.swing.GroupLayout.PREFERRED_SIZE, 184, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(JTF_ModProductoPrecio, javax.swing.GroupLayout.PREFERRED_SIZE, 184, javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addGap(18, 18, 18)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(jLabel2)
                                    .addComponent(JL_ModProductoPesosUruguayos)))
                            .addGroup(layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
                                    .addComponent(JCB_ModProdSeleccioneCategoriaMODIFICAR, 0, 168, Short.MAX_VALUE))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(jButton2)
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(jButton1)
                                        .addGap(41, 41, 41)
                                        .addComponent(JB_ModificarProductoGuardar)
                                        .addGap(18, 18, 18)
                                        .addComponent(JB_ModProductoCerrar))))))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(10, 10, 10)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(JL_ModProductoSeleccioneProducto)
                                .addGap(18, 18, 18)
                                .addComponent(JCB_ModProdSeleccioneCategoria, javax.swing.GroupLayout.PREFERRED_SIZE, 212, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(JL_ModProductoInforProducto)
                                .addGap(18, 18, 18)
                                .addComponent(JCB_ModProdSeleccioneProducto, javax.swing.GroupLayout.PREFERRED_SIZE, 215, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(JL_ModProductoTitulo)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(JTF_ModProductoTitulo, javax.swing.GroupLayout.PREFERRED_SIZE, 185, javax.swing.GroupLayout.PREFERRED_SIZE))
                                    .addComponent(JL_ModProductoInforProducto1))
                                .addGap(18, 18, 18)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addComponent(JTF_NuevaRef, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                    .addComponent(JL_ModProductoNumReferencia, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(JTF_ModProductoNumReferencia, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(JTF_ModProdNumRef, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(JCB_CambiarNumRef)))))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(11, 11, 11)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(JL_ModProductoSeleccioneProducto)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(8, 8, 8)
                        .addComponent(JCB_ModProdSeleccioneCategoria, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(31, 31, 31)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(JL_ModProductoInforProducto)
                    .addComponent(JCB_ModProdSeleccioneProducto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(32, 32, 32)
                .addComponent(JL_ModProductoInforProducto1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(JTF_ModProductoTitulo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(JL_ModProductoTitulo)
                    .addComponent(JL_ModProductoNumReferencia)
                    .addComponent(JTF_ModProductoNumReferencia, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(JCB_CambiarNumRef))
                .addGap(2, 2, 2)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(JTF_NuevaRef, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(JTF_ModProdNumRef, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(3, 3, 3)
                        .addComponent(JL_ModProductoDescripcion))
                    .addComponent(JTF_ModProductoDescripcion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(3, 3, 3)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(JL_ModProductoEspecifiacion)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(7, 7, 7)
                        .addComponent(TA_ModProdEspecificaciones, javax.swing.GroupLayout.PREFERRED_SIZE, 72, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(28, 28, 28)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(JTF_ModProductoPrecio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGroup(layout.createSequentialGroup()
                                .addGap(3, 3, 3)
                                .addComponent(JL_ModProductoPrecio)))
                        .addGap(7, 7, 7)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(JL_ModProductoProveedor)
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(JTF_ModProductoProveedor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jLabel2)))
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addGap(14, 14, 14)
                                .addComponent(JL_ModProductoCategorias)
                                .addGap(46, 46, 46)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(JB_ModificarProductoGuardar)
                                    .addComponent(JB_ModProductoCerrar)))
                            .addGroup(layout.createSequentialGroup()
                                .addGap(18, 18, 18)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 81, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addGap(18, 18, 18)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                    .addComponent(JCB_ModProdSeleccioneCategoriaMODIFICAR, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)))))
                    .addComponent(JL_ModProductoPesosUruguayos))
                .addContainerGap(54, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void JB_ModProductoCerrarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JB_ModProductoCerrarActionPerformed
        //Oculta formulario
        this.setVisible (false);
    }//GEN-LAST:event_JB_ModProductoCerrarActionPerformed

    //GUARDAR
    private void JB_ModificarProductoGuardarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JB_ModificarProductoGuardarActionPerformed
        
         //VALIDACIONES... 
        /*________campos vacios________*/
        
        //...Titulo
        if (JTF_ModProductoTitulo.getText().equals("")){
             getToolkit().beep();
            JOptionPane.showMessageDialog(null, "Debe digitar un Titulo de Producto");
            JTF_ModProductoTitulo.requestFocusInWindow();
            return;
        }
        //..Numero Referencia
        if (JTF_ModProductoNumReferencia.getText().equals("")){
             getToolkit().beep();
            JOptionPane.showMessageDialog(null, "Debe digitar un Numero de Referencia");
            JTF_ModProductoNumReferencia.requestFocusInWindow();
            return;
        }
        //..Descripcion
        if (JTF_ModProductoDescripcion.getText().equals("")){
             getToolkit().beep();
            JOptionPane.showMessageDialog(null, "Debe digitar una Descripcion");
            JTF_ModProductoDescripcion.requestFocusInWindow();
            return;
        }
        //..Especificaciones
        if (JTF_ModProductoDescripcion.getText().equals("")){
             getToolkit().beep();
            JOptionPane.showMessageDialog(null, "Debe digitar una Descripcion");
            JTF_ModProductoDescripcion.requestFocusInWindow();
            return;
        }
        //..Precio
        if (JTF_ModProductoPrecio.getText().equals("")){
             getToolkit().beep();
            JOptionPane.showMessageDialog(null, "Debe digitar un Precio");
            JTF_ModProductoPrecio.requestFocusInWindow();
            return;
        }
        //...Categorias....  
        if (JCB_ModProdSeleccioneCategoriaMODIFICAR.getSelectedIndex() == 0){
             getToolkit().beep();
             JOptionPane.showMessageDialog(null, "Debe Seleccionar una Categoria");
            JTF_ModProductoPrecio.requestFocusInWindow();
            return;
        }
        
            
         //...................................................................
        
        /*_____GUARDANDO MODIFICACION_____*/
        
        
        
        try{
             JOptionPane.showMessageDialog(null,"Ingresa AL TRY");
                     
            //boolean CambiaNumRef = JTF_ModProdNumRef.isVisible();
            
            int num = ICP.findProducto(Integer.parseInt(JTF_ModProductoNumReferencia.getText())).getNumRef(); //Numero Referencia ORIGINAL
            JOptionPane.showMessageDialog(null,"el NUMERO DE REFERENCIA DEL PRODUCTO ES" + num);
              
            //INGRESA CUANDO NO ESTA VISIBLE.
            if ( JTF_ModProdNumRef.isVisible() && (Integer.parseInt(JTF_ModProdNumRef.getText())!= Integer.parseInt(JTF_ModProductoNumReferencia.getText())) ) {
                System.out.println("NumRef1 :" + num + "Numref2 :" + Integer.parseInt(JTF_ModProdNumRef.getText()));
                 
                         
                        //Borrar categorias
                        //ICP
                        for (int i = 0; i < Productocategoria.getRowCount(); i++) {
                            //Borro de producto_categoria
                            ICP.removerCate(num, Productocategoria.getColumnClass(i).toString());
                            JOptionPane.showMessageDialog(null, "Primer borrado" + Productocategoria.getColumnClass(i).toString());
            
                            //Borro de Categorias_producto
                           ICC.RemoveProductoCategoria(Productocategoria.getColumnClass(i).toString(), num);
                        JOptionPane.showMessageDialog(null, "Segundo borrado borrado" + Productocategoria.getColumnClass(i).toString());
            
                        }    
                
                        
                        //fin for
                        
                        //BORRAR EL PRODUCTO DE LOS PROVEEDORES Q LO PROVEIAN
                        ICPROV.RemoveProductoProveedor(num, ICP.findProducto(num).getproveedor().getNickname());


                        ICP.destroyProducto(num);

                        //CREAMOS EL NUEVO PRODUCTO
                        ICP.createProducto(Integer.parseInt(JTF_ModProdNumRef.getText()), JTF_ModProductoTitulo.getText(), JTF_ModProductoDescripcion.getText(), TA_ModProdEspecificaciones.getText().toUpperCase(), Float.parseFloat(JTF_ModProductoPrecio.getText()), ICPROV.findProveedor(JTF_ModProductoProveedor.getText()));

                        //ANADIMOS NUEVAMENTE EL PRODUCTO A LA CATEGORIA
                        ICC.addProductoCategoria(JCB_ModProdSeleccioneCategoriaMODIFICAR.getSelectedItem().toString(),Integer.parseInt(JTF_ModProdNumRef.getText()));

                        //ANADIMOS EL PRODUCTO NUEVAMENTE CON SU PROVEEDOR EL CUAL NO SE MODIFICO.
                        ICPROV.addProductoProveedor(Integer.parseInt(JTF_ModProdNumRef.getText()),ICPROV.findProveedor(JTF_ModProductoProveedor.getText()).getNickname());
            }

                else{
                    JOptionPane.showMessageDialog(null,"ingreso al else");
                        //if( JCB_ModProdSeleccioneCategoriaMODIFICAR.getSelectedItem().toString().equals(JCB_ModProdSeleccioneCategoria.getSelectedItem().toString())){
                        //        System.out.println("Ingresa mismo ID misma CAT");
                                //SIMPLEMENTE EDITAMOS LAS PROPIEDADES DEL PRODUCTO PUESTO QUE NO CAMBIO CATEGORIA
                        //        ICP.editProducto(Integer.parseInt(JTF_ModProductoNumReferencia.getText()), JTF_ModProductoTitulo.getText(), JTF_ModProductoDescripcion.getText(), TA_ModProdEspecificaciones.getText().toUpperCase(), Integer.parseInt(JTF_ModProductoPrecio.getText()), ICPROV.findProveedor(JTF_ModProductoProveedor.getText()));
                        //}
                        //else{
                        
                        //ME TRAIGO LA CATEGORIA A LA QUE PERTENECE EL PRODUCTO, LUEGO A ESA CATEGORIA LE QUITO 
                      //ESTE MISMO PRODUCTO DE SU LISTA DE PRODUCTOS Y YA LA PERSISTE TAMBIEN
//ver como arreglar                      
//ICC.RemoveProductoCategoria(ICP.findProducto(num).getCategoria().getNombre(), num);

                    
                    //SI CAMBIE LAS CATEGORIAS
                     //Borrar categorias
                        for (int i = 0; i < Productocategoria.getRowCount(); i++) {
                            //Borro de producto_categoria
                            ICP.removerCate(num, Productocategoria.getColumnClass(i).toString());
                            JOptionPane.showMessageDialog(null, "Primer borrado" + Productocategoria.getColumnClass(i).toString());
            
                            //Borro de Categorias_producto
                           ICC.RemoveProductoCategoria(Productocategoria.getColumnClass(i).toString(), num);
                        JOptionPane.showMessageDialog(null, "Segundo borrado borrado" + Productocategoria.getColumnClass(i).toString());
            
                        } 
                     //Ahora agrego las nuevas categorias
                    
                    
                      //SE PERSISTE EL NUEVO PRODUCTO MODIFICANDOSE
                
                      ICP.editProducto(Integer.parseInt(JTF_ModProductoNumReferencia.getText()), JTF_ModProductoTitulo.getText(), JTF_ModProductoDescripcion.getText(), TA_ModProdEspecificaciones.getText().toUpperCase(), Float.parseFloat(JTF_ModProductoPrecio.getText()), ICPROV.findProveedor(JTF_ModProductoProveedor.getText()));
                  
                      //A LA NUEVA CATEGORIA SE LE AGREGA EL PRODUCTO A SU LISTA LUEGO QUE SE PERSISTIO EL NUEVO PROD Y YA SE PERSISTE LA MISMA TAMBIEN
                      //ICC.addProductoCategoria(JCB_ModProdSeleccioneCategoriaMODIFICAR.getSelectedItem().toString(), Integer.parseInt(JTF_ModProductoNumReferencia.getText()) );
                      
                      //}
                     
             }

            JOptionPane.showMessageDialog(this, "Producto "+ JTF_ModProductoTitulo.getText() + " Modificado exitosamente", "Modificado",JOptionPane.INFORMATION_MESSAGE);
            
            }catch (Exception t){
                getToolkit().beep();
                JOptionPane.showMessageDialog(null, t.getMessage());
                System.out.println("ES UN CATCH AL TRY");
            }
        //SALE
        this.setVisible(false);
   
    }//GEN-LAST:event_JB_ModificarProductoGuardarActionPerformed

    //EVENTO Numero Referencia (Solo numeros)
    private void JTF_ModProductoNumReferenciaKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_JTF_ModProductoNumReferenciaKeyTyped
        // TODO add your handling code here:
        //evt es el evento provocado
        char c=evt.getKeyChar();
        //Convertimos a char la tecla que se haya pulsado
      if(!Character.isDigit(c)){
          //Se pregunta si es digito
          getToolkit().beep();
          //piiiippp...!!
          evt.consume();
          //lo frena..
      }
    }//GEN-LAST:event_JTF_ModProductoNumReferenciaKeyTyped
private void CrearModeloJT_Productocategoria(){
         try {
             Productocategoria = (new DefaultTableModel(
                null, new String [] {"Categoria"}){
                Class[] types = new Class [] {
                java.lang.String.class
    };
                boolean[] canEdit = new boolean [] {
                false
                };
                @Override
                public Class getColumnClass(int columnIndex) {
                   return types [columnIndex];
                }
                @Override
                public boolean isCellEditable(int rowIndex, int colIndex){
                   return canEdit [colIndex];
                }
            });
          JT_Productocategoria.setModel(Productocategoria);
         } catch (Exception e) {
             JOptionPane.showMessageDialog(null,e.toString());
            }    
     }

    //EVENTO Precio (Solo numeros)
    private void JTF_ModProductoPrecioKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_JTF_ModProductoPrecioKeyTyped
        // TODO add your handling code here:
        //evt es el evento provocado
        char c=evt.getKeyChar();
        //Convertimos a char la tecla que se haya pulsado
      if(!Character.isDigit(c)){
          //Se pregunta si es digito
          getToolkit().beep();
          //piiiippp...!!
          evt.consume();
          //lo frena..
      }
    }//GEN-LAST:event_JTF_ModProductoPrecioKeyTyped

    //EVENTO SELECCIONAR CATEGORIA
    private void JCB_ModProdSeleccioneCategoriaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JCB_ModProdSeleccioneCategoriaActionPerformed
        //limpiarTF();
        //iniciarComboBoxProducto();
        
    }//GEN-LAST:event_JCB_ModProdSeleccioneCategoriaActionPerformed

    //AL ELEGIR PRODUCTO .. lo carga en los TextField
    private void JCB_ModProdSeleccioneProductoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JCB_ModProdSeleccioneProductoActionPerformed
        // TODO add your handling code here:
                
    }//GEN-LAST:event_JCB_ModProdSeleccioneProductoActionPerformed

    private void JCB_ModProdSeleccioneCategoriaMODIFICARActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JCB_ModProdSeleccioneCategoriaMODIFICARActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_JCB_ModProdSeleccioneCategoriaMODIFICARActionPerformed

    private void JCB_ModProdSeleccioneProductoMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_JCB_ModProdSeleccioneProductoMouseClicked
        JCB_ModProdSeleccioneCategoriaMODIFICAR.setEnabled(true);
        
       // Integer prodNum = Integer.parseInt( JCB_ModProdSeleccioneProducto.getSelectedItem().toString() ); //NOMBRE prod Seleccionado
        String nombreProd = JCB_ModProdSeleccioneProducto.getSelectedItem().toString();
         try {
            JTF_ModProductoTitulo.setText(ICP.findProducto2(nombreProd).getNombre());
            JTF_ModProductoNumReferencia.setText(Integer.toString(ICP.findProducto2(nombreProd).getNumRef()));
            JTF_ModProductoDescripcion.setText(ICP.findProducto2(nombreProd).getDescripcion());
            TA_ModProdEspecificaciones.setText(ICP.findProducto2(nombreProd).getEspecificacion());
           // JSP_ModProductoEspecifiacioens.setToolTipText(producto.getEspecificacion());
            JTF_ModProductoPrecio.setText ( Float.toString(ICP.findProducto2(nombreProd).getPrecio() ) );
            JTF_ModProductoProveedor.setText (ICP.findProducto2(nombreProd).getproveedor().getNickname());
            
            JCB_ModProdSeleccioneCategoriaMODIFICAR.setEnabled(true);
            
            JCB_ModProdSeleccioneCategoriaMODIFICAR.setSelectedIndex(JCB_ModProdSeleccioneCategoria.getSelectedIndex());
            //CARGAR tabla de categorias
            //Limpio si es que ya contiene algo
            for (int i = 0; i < Productocategoria.getRowCount(); i++) {
            Productocategoria.removeRow(i);
            i-=1;
            }
            //cargo datos
            Object A[] = null;
            for (int i = 0; i < ICP.findProducto2(nombreProd).getlistacategorias().size(); i++) {
                    Productocategoria.addRow(A);
                    Productocategoria.setValueAt(ICP.findProducto2(nombreProd).getlistacategorias().get(i).getNombre(), i, 0);
            
          }
            
            
            
            
        } catch (Exception e) {
        }

    }//GEN-LAST:event_JCB_ModProdSeleccioneProductoMouseClicked

    private void JCB_ModProdSeleccioneCategoriaItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_JCB_ModProdSeleccioneCategoriaItemStateChanged
        //carga el nombre de la categoria
        String seleccion = JCB_ModProdSeleccioneCategoria.getSelectedItem().toString(); 
        //Obtengo el listado de productos de la categoria seleccionada
        //JOptionPane.showMessageDialog (null,catseleccionada.getNombre());
        iniciarComboBoxProducto(seleccion);
    }//GEN-LAST:event_JCB_ModProdSeleccioneCategoriaItemStateChanged

    private void JCB_ModProdSeleccioneProductoItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_JCB_ModProdSeleccioneProductoItemStateChanged
        
    }//GEN-LAST:event_JCB_ModProdSeleccioneProductoItemStateChanged

    private void JCB_CambiarNumRefActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_JCB_CambiarNumRefActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_JCB_CambiarNumRefActionPerformed

    private void JTF_ModProdNumRefKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_JTF_ModProdNumRefKeyTyped
        // TODO add your handling code here:
    }//GEN-LAST:event_JTF_ModProdNumRefKeyTyped

//SE AGREGA PARA LOGRAR CAMBIAR EL NUMREF DEL PRODUCTO EN CUESTION.
    private void JCB_CambiarNumRefMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_JCB_CambiarNumRefMouseClicked
        JTF_NuevaRef.setVisible(true);
        JTF_ModProdNumRef.setVisible(true);
        JTF_ModProdNumRef.setEditable(true);
        
    }//GEN-LAST:event_JCB_CambiarNumRefMouseClicked

    //METODO iniciar ComboBox de Categoria
private void iniciarComboBoxCategoria() {
        try {
            for(int i = 0; i < ICC.findCategoriaEntities().size(); i++) {
                
                boolean tiene = ICC.findCategoriaEntities().get(i).getTieneProductos();
                //Si tiene productos me interesa mostrarlo
                if (tiene){
                String nickname = ICC.findCategoriaEntities().get(i).getNombre();
                JCB_ModProdSeleccioneCategoria.addItem(nickname);
                JCB_ModProdSeleccioneCategoriaMODIFICAR.addItem (nickname);
                
                }
                
            }
        }
        catch (Exception e){
            getToolkit().beep();
            JOptionPane.showMessageDialog(this, e.getMessage());
        }
        
          
 }

//CARGA el ComboBox de PRODUCTO
private void iniciarComboBoxProducto (String seleccionada) { 
        //JCB_ModProdSeleccioneProducto.setSelectedIndex(-1);
        if( JCB_ModProdSeleccioneProducto.getItemCount() == 0){
        try{           
         for(int i = 0; i < ICC.findCategoria(seleccionada).getListadoProducto().size(); i++) {
            // int numRef = ListaProducto.get(i).getNumRef();
             String nomProd = ICC.findCategoria(seleccionada).getListadoProducto().get(i).getNombre();
             JCB_ModProdSeleccioneProducto.addItem(nomProd); //Inserta al comienzo 
    
         }
                  
        }catch (Exception e){ 
             getToolkit().beep();
            JOptionPane.showMessageDialog(this, e.getMessage());
         }
        
    }
        else{
            JCB_ModProdSeleccioneProducto.removeAllItems();            
            try{                       
            for(int i = 0; i < ICC.findCategoria(seleccionada).getListadoProducto().size(); i++) {
            // int numRef = ListaProducto.get(i).getNumRef();
             String nomProd = ICC.findCategoria(seleccionada).getListadoProducto().get(i).getNombre();
             JCB_ModProdSeleccioneProducto.addItem(nomProd); //Inserta al comienzo 
    
                }
                  
            }
            catch (Exception e){ 
             getToolkit().beep();
            JOptionPane.showMessageDialog(this, e.getMessage());
             }
            
        }
}


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton JB_ModProductoCerrar;
    private javax.swing.JButton JB_ModificarProductoGuardar;
    private javax.swing.JButton JCB_CambiarNumRef;
    private javax.swing.JComboBox JCB_ModProdSeleccioneCategoria;
    private javax.swing.JComboBox JCB_ModProdSeleccioneCategoriaMODIFICAR;
    private javax.swing.JComboBox JCB_ModProdSeleccioneProducto;
    private javax.swing.JLabel JL_ModProductoCategorias;
    private javax.swing.JLabel JL_ModProductoDescripcion;
    private javax.swing.JLabel JL_ModProductoEspecifiacion;
    private javax.swing.JLabel JL_ModProductoInforProducto;
    private javax.swing.JLabel JL_ModProductoInforProducto1;
    private javax.swing.JLabel JL_ModProductoNumReferencia;
    private javax.swing.JLabel JL_ModProductoPesosUruguayos;
    private javax.swing.JLabel JL_ModProductoPrecio;
    private javax.swing.JLabel JL_ModProductoProveedor;
    private javax.swing.JLabel JL_ModProductoSeleccioneProducto;
    private javax.swing.JLabel JL_ModProductoTitulo;
    private javax.swing.JTextField JTF_ModProdNumRef;
    private javax.swing.JTextField JTF_ModProductoDescripcion;
    private javax.swing.JTextField JTF_ModProductoNumReferencia;
    private javax.swing.JTextField JTF_ModProductoPrecio;
    private javax.swing.JTextField JTF_ModProductoProveedor;
    private javax.swing.JTextField JTF_ModProductoTitulo;
    private javax.swing.JLabel JTF_NuevaRef;
    private javax.swing.JTable JT_Productocategoria;
    private java.awt.TextArea TA_ModProdEspecificaciones;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JScrollPane jScrollPane1;
    // End of variables declaration//GEN-END:variables
}
